@etherisc/gif-next 0.0.2-f36fd21-685 → 0.0.2-f47f21f-178
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.
- package/README.md +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +163 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -131
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -233
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +137 -283
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -265
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +359 -194
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +433 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +7 -17
- package/contracts/distribution/DistributionService.sol +83 -65
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +418 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -97
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -10
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +5 -3
- package/contracts/pool/BundleService.sol +213 -61
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +60 -53
- package/contracts/pool/PoolService.sol +250 -140
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +313 -118
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +394 -196
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +125 -71
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +40 -55
- package/contracts/shared/ComponentService.sol +235 -151
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +11 -29
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
| @@ -1,13 +1,14 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 5 7 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 6 8 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 7 9 |  | 
| 8 10 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 11 | 
             
            import {Blocknumber}  from "../type/Blocknumber.sol";
         | 
| 10 | 
            -
            import {InitializableCustom} from "../shared/InitializableCustom.sol";
         | 
| 11 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 13 | 
             
            import {STAKE, TARGET} from "../type/ObjectType.sol";
         | 
| 13 14 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| @@ -16,16 +17,18 @@ import {UFixed} from "../type/UFixed.sol"; | |
| 16 17 |  | 
| 17 18 | 
             
            contract StakingReader is
         | 
| 18 19 | 
             
                IRegistryLinked,
         | 
| 19 | 
            -
                 | 
| 20 | 
            +
                Initializable
         | 
| 20 21 | 
             
            {
         | 
| 21 22 |  | 
| 22 | 
            -
                error  | 
| 23 | 
            +
                error ErrorStakingReaderUnauthorizedCaler();
         | 
| 23 24 |  | 
| 25 | 
            +
                address private _initializeOwner;
         | 
| 24 26 | 
             
                IRegistry private _registry;
         | 
| 25 27 | 
             
                IStaking private _staking;
         | 
| 26 28 | 
             
                StakingStore private _store;
         | 
| 27 29 |  | 
| 28 | 
            -
                constructor(IRegistry registry)  | 
| 30 | 
            +
                constructor(IRegistry registry) {
         | 
| 31 | 
            +
                    _initializeOwner = msg.sender;
         | 
| 29 32 | 
             
                    _registry = registry;
         | 
| 30 33 | 
             
                }
         | 
| 31 34 |  | 
| @@ -34,8 +37,12 @@ contract StakingReader is | |
| 34 37 | 
             
                    address stakingStoreAddress
         | 
| 35 38 | 
             
                )
         | 
| 36 39 | 
             
                    external
         | 
| 37 | 
            -
                    initializer
         | 
| 40 | 
            +
                    initializer()
         | 
| 38 41 | 
             
                {
         | 
| 42 | 
            +
                    if (msg.sender != _initializeOwner) {
         | 
| 43 | 
            +
                        revert ErrorStakingReaderUnauthorizedCaler();
         | 
| 44 | 
            +
                    }
         | 
| 45 | 
            +
             | 
| 39 46 | 
             
                    _staking = IStaking(stakingAddress);
         | 
| 40 47 | 
             
                    _store = StakingStore(stakingStoreAddress);
         | 
| 41 48 | 
             
                }
         | 
| @@ -4,21 +4,15 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 7 | 
            -
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 8 | 
            -
            import {IPoolService} from "../pool/IPoolService.sol";
         | 
| 9 7 | 
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 10 8 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 11 9 | 
             
            import {RegistryService} from "../registry/RegistryService.sol";
         | 
| 12 10 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 13 11 | 
             
            import {IStakingService} from "./IStakingService.sol";
         | 
| 14 12 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 15 | 
            -
            import {ObjectType, INSTANCE,  | 
| 13 | 
            +
            import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
         | 
| 16 14 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 17 15 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 18 | 
            -
            import {StakeManagerLib} from "./StakeManagerLib.sol";
         | 
| 19 | 
            -
            import {StakingReader} from "./StakingReader.sol";
         | 
| 20 | 
            -
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 21 | 
            -
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 16 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 23 17 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 24 18 |  | 
| @@ -38,14 +32,6 @@ contract StakingService is | |
| 38 32 | 
             
                    TokenHandler _tokenHandler;
         | 
| 39 33 | 
             
                }
         | 
| 40 34 |  | 
| 41 | 
            -
                modifier onlyNftOwner(NftId nftId) {
         | 
| 42 | 
            -
                    if(msg.sender != getRegistry().ownerOf(nftId)) {
         | 
| 43 | 
            -
                        revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
         | 
| 44 | 
            -
                    }
         | 
| 45 | 
            -
                    _;
         | 
| 46 | 
            -
                }
         | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 35 | 
             
                function createInstanceTarget(
         | 
| 50 36 | 
             
                    NftId targetNftId,
         | 
| 51 37 | 
             
                    Seconds initialLockingPeriod,
         | 
| @@ -122,11 +108,10 @@ contract StakingService is | |
| 122 108 |  | 
| 123 109 | 
             
                    // transfer withdrawal amount to target owner
         | 
| 124 110 | 
             
                    address instanceOwner = getRegistry().ownerOf(instanceNftId);
         | 
| 111 | 
            +
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| 125 112 | 
             
                    $._staking.transferDipAmount(
         | 
| 126 113 | 
             
                        instanceOwner,
         | 
| 127 114 | 
             
                        dipAmount);
         | 
| 128 | 
            -
             | 
| 129 | 
            -
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| 130 115 | 
             
                }
         | 
| 131 116 |  | 
| 132 117 |  | 
| @@ -169,12 +154,12 @@ contract StakingService is | |
| 169 154 | 
             
                        targetNftId,
         | 
| 170 155 | 
             
                        dipAmount);
         | 
| 171 156 |  | 
| 157 | 
            +
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 158 | 
            +
             | 
| 172 159 | 
             
                    // collect staked dip by staking
         | 
| 173 160 | 
             
                    $._staking.collectDipAmount(
         | 
| 174 161 | 
             
                        stakeOwner,
         | 
| 175 162 | 
             
                        dipAmount);
         | 
| 176 | 
            -
             | 
| 177 | 
            -
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 178 163 | 
             
                }
         | 
| 179 164 |  | 
| 180 165 |  | 
| @@ -197,12 +182,11 @@ contract StakingService is | |
| 197 182 |  | 
| 198 183 | 
             
                    // collect staked dip by staking
         | 
| 199 184 | 
             
                    if (dipAmount.gtz()) {
         | 
| 185 | 
            +
                        emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 200 186 | 
             
                        $._staking.collectDipAmount(
         | 
| 201 187 | 
             
                            stakeOwner,
         | 
| 202 188 | 
             
                            dipAmount);
         | 
| 203 189 | 
             
                    }
         | 
| 204 | 
            -
             | 
| 205 | 
            -
                    emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 206 190 | 
             
                }
         | 
| 207 191 |  | 
| 208 192 |  | 
| @@ -247,11 +231,10 @@ contract StakingService is | |
| 247 231 | 
             
                    address stakeOwner = msg.sender;
         | 
| 248 232 |  | 
| 249 233 | 
             
                    Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
         | 
| 234 | 
            +
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 250 235 | 
             
                    $._staking.transferDipAmount(
         | 
| 251 236 | 
             
                        stakeOwner,
         | 
| 252 237 | 
             
                        rewardsClaimedAmount);
         | 
| 253 | 
            -
             | 
| 254 | 
            -
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 255 238 | 
             
                }
         | 
| 256 239 |  | 
| 257 240 |  | 
| @@ -270,11 +253,10 @@ contract StakingService is | |
| 270 253 | 
             
                    ) = $._staking.unstake(stakeNftId);
         | 
| 271 254 |  | 
| 272 255 | 
             
                    Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
         | 
| 256 | 
            +
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 273 257 | 
             
                    $._staking.transferDipAmount(
         | 
| 274 258 | 
             
                        stakeOwner,
         | 
| 275 259 | 
             
                        totalAmount);
         | 
| 276 | 
            -
             | 
| 277 | 
            -
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 278 260 | 
             
                }
         | 
| 279 261 |  | 
| 280 262 |  | 
| @@ -335,7 +317,7 @@ contract StakingService is | |
| 335 317 | 
             
                        address stakingAddress
         | 
| 336 318 | 
             
                    ) = abi.decode(data, (address, address, address));
         | 
| 337 319 |  | 
| 338 | 
            -
                     | 
| 320 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 339 321 |  | 
| 340 322 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 341 323 | 
             
                    $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
         | 
| @@ -343,7 +325,7 @@ contract StakingService is | |
| 343 325 | 
             
                    $._dip = $._staking.getToken();
         | 
| 344 326 | 
             
                    $._tokenHandler = $._staking.getTokenHandler();
         | 
| 345 327 |  | 
| 346 | 
            -
                     | 
| 328 | 
            +
                    _registerInterface(type(IStakingService).interfaceId);
         | 
| 347 329 | 
             
                }
         | 
| 348 330 |  | 
| 349 331 |  | 
| @@ -389,12 +371,12 @@ contract StakingService is | |
| 389 371 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 390 372 | 
             
                    newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
         | 
| 391 373 |  | 
| 374 | 
            +
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 375 | 
            +
             | 
| 392 376 | 
             
                    // collect reward dip from provider
         | 
| 393 377 | 
             
                    $._staking.collectDipAmount(
         | 
| 394 378 | 
             
                        rewardProvider,
         | 
| 395 379 | 
             
                        dipAmount);
         | 
| 396 | 
            -
             | 
| 397 | 
            -
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 398 380 | 
             
                }
         | 
| 399 381 |  | 
| 400 382 |  | 
| @@ -18,14 +18,14 @@ contract StakingServiceManager is | |
| 18 18 | 
             
                    address registryAddress,
         | 
| 19 19 | 
             
                    bytes32 salt
         | 
| 20 20 | 
             
                )
         | 
| 21 | 
            -
                    ProxyManager(registryAddress)
         | 
| 22 21 | 
             
                {
         | 
| 23 22 | 
             
                    StakingService svc = new StakingService();
         | 
| 24 23 | 
             
                    bytes memory data = abi.encode(
         | 
| 25 24 | 
             
                        authority, 
         | 
| 26 25 | 
             
                        registryAddress, 
         | 
| 27 26 | 
             
                        IRegistry(registryAddress).getStakingAddress());
         | 
| 28 | 
            -
                    IVersionable versionable =  | 
| 27 | 
            +
                    IVersionable versionable = initialize(
         | 
| 28 | 
            +
                        registryAddress,
         | 
| 29 29 | 
             
                        address(svc), 
         | 
| 30 30 | 
             
                        data,
         | 
| 31 31 | 
             
                        salt);
         | 
| @@ -132,9 +132,9 @@ library TargetManagerLib { | |
| 132 132 | 
             
                    public 
         | 
| 133 133 | 
             
                    pure
         | 
| 134 134 | 
             
                {
         | 
| 135 | 
            -
                    // check locking period is  | 
| 136 | 
            -
                    if (lockingPeriod. | 
| 137 | 
            -
                        revert IStaking. | 
| 135 | 
            +
                    // check locking period is >= min locking period
         | 
| 136 | 
            +
                    if (lockingPeriod.lt(getMinimumLockingPeriod())) {
         | 
| 137 | 
            +
                        revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
         | 
| 138 138 | 
             
                    }
         | 
| 139 139 |  | 
| 140 140 | 
             
                    // check locking period <= max locking period
         | 
| @@ -190,6 +190,10 @@ library TargetManagerLib { | |
| 190 190 | 
             
                    return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
         | 
| 191 191 | 
             
                }
         | 
| 192 192 |  | 
| 193 | 
            +
                /// @dev the minimum locking period is 24 hours
         | 
| 194 | 
            +
                function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
         | 
| 195 | 
            +
                    return SecondsLib.toSeconds(24 * 3600);
         | 
| 196 | 
            +
                }
         | 
| 193 197 |  | 
| 194 198 | 
             
                function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
         | 
| 195 199 | 
             
                    return UFixedLib.toUFixed(33, -2);
         | 
| @@ -11,7 +11,9 @@ using { | |
| 11 11 | 
             
                eqAmount as ==,
         | 
| 12 12 | 
             
                nqAmount as !=,
         | 
| 13 13 | 
             
                ltAmount as <,
         | 
| 14 | 
            +
                ltAmount as <=,
         | 
| 14 15 | 
             
                gtAmount as >,
         | 
| 16 | 
            +
                gteAmount as >=,
         | 
| 15 17 | 
             
                AmountLib.add,
         | 
| 16 18 | 
             
                AmountLib.eq,
         | 
| 17 19 | 
             
                AmountLib.eqz,
         | 
| @@ -43,10 +45,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) { | |
| 43 45 | 
             
                return AmountLib.lt(a, b);
         | 
| 44 46 | 
             
            }
         | 
| 45 47 |  | 
| 48 | 
            +
            function lteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 49 | 
            +
                return AmountLib.lte(a, b);
         | 
| 50 | 
            +
            }
         | 
| 51 | 
            +
             | 
| 46 52 | 
             
            function gtAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 47 53 | 
             
                return AmountLib.gt(a, b);
         | 
| 48 54 | 
             
            }
         | 
| 49 55 |  | 
| 56 | 
            +
            function gteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 57 | 
            +
                return AmountLib.gte(a, b);
         | 
| 58 | 
            +
            }
         | 
| 59 | 
            +
             | 
| 50 60 | 
             
            library AmountLib {
         | 
| 51 61 |  | 
| 52 62 | 
             
                error ErrorAmountLibValueTooBig(uint256 amount);
         | 
| @@ -84,6 +94,11 @@ library AmountLib { | |
| 84 94 | 
             
                    return Amount.unwrap(a1) < Amount.unwrap(a2);
         | 
| 85 95 | 
             
                }
         | 
| 86 96 |  | 
| 97 | 
            +
                /// @dev return true if amount a1 is less or equal than a2
         | 
| 98 | 
            +
                function lte(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 99 | 
            +
                    return Amount.unwrap(a1) <= Amount.unwrap(a2);
         | 
| 100 | 
            +
                }
         | 
| 101 | 
            +
             | 
| 87 102 | 
             
                /// @dev return true if amount a1 is greater than a2
         | 
| 88 103 | 
             
                function gt(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 89 104 | 
             
                    return Amount.unwrap(a1) > Amount.unwrap(a2);
         | 
| @@ -11,8 +11,14 @@ using { | |
| 11 11 | 
             
                eqBlocknumber as ==,
         | 
| 12 12 | 
             
                neBlocknumber as !=,
         | 
| 13 13 | 
             
                BlocknumberLib.toInt,
         | 
| 14 | 
            +
                BlocknumberLib.eq,
         | 
| 15 | 
            +
                BlocknumberLib.ne,
         | 
| 14 16 | 
             
                BlocknumberLib.eqz,
         | 
| 15 | 
            -
                BlocknumberLib.gtz
         | 
| 17 | 
            +
                BlocknumberLib.gtz,
         | 
| 18 | 
            +
                BlocknumberLib.gt,
         | 
| 19 | 
            +
                BlocknumberLib.gte,
         | 
| 20 | 
            +
                BlocknumberLib.lt,
         | 
| 21 | 
            +
                BlocknumberLib.lte
         | 
| 16 22 | 
             
            } for Blocknumber global;
         | 
| 17 23 |  | 
| 18 24 | 
             
            /// @dev return true if Blocknumber a is greater than Blocknumber b
         | 
| @@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol"; | |
| 12 12 | 
             
            using {
         | 
| 13 13 | 
             
                eqClaimId as ==, 
         | 
| 14 14 | 
             
                neClaimId as !=, 
         | 
| 15 | 
            +
                ClaimIdLib.eq,
         | 
| 15 16 | 
             
                ClaimIdLib.eqz,
         | 
| 16 17 | 
             
                ClaimIdLib.gtz,
         | 
| 17 18 | 
             
                ClaimIdLib.toInt,
         | 
| @@ -21,7 +22,7 @@ using { | |
| 21 22 |  | 
| 22 23 | 
             
            // pure free functions for operators
         | 
| 23 24 | 
             
            function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
         | 
| 24 | 
            -
                return  | 
| 25 | 
            +
                return ClaimIdLib.eq(a, b);
         | 
| 25 26 | 
             
            }
         | 
| 26 27 |  | 
| 27 28 | 
             
            function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
         | 
| @@ -68,6 +69,10 @@ library ClaimIdLib { | |
| 68 69 | 
             
                    return ClaimId.unwrap(a) > 0;
         | 
| 69 70 | 
             
                }
         | 
| 70 71 |  | 
| 72 | 
            +
                function eq(ClaimId a, ClaimId b) public pure returns (bool) {
         | 
| 73 | 
            +
                    return ClaimId.unwrap(a) == ClaimId.unwrap(b);
         | 
| 74 | 
            +
                }
         | 
| 75 | 
            +
             | 
| 71 76 | 
             
                /// @dev Returns true if the value is zero (== 0).
         | 
| 72 77 | 
             
                function eqz(ClaimId a) public pure returns (bool) {
         | 
| 73 78 | 
             
                    return ClaimId.unwrap(a) == 0;
         | 
    
        package/contracts/type/NftId.sol
    CHANGED
    
    
| @@ -9,6 +9,7 @@ using { | |
| 9 9 | 
             
                neObjectType as !=,
         | 
| 10 10 | 
             
                ObjectTypeLib.toInt,
         | 
| 11 11 | 
             
                ObjectTypeLib.eqz,
         | 
| 12 | 
            +
                ObjectTypeLib.eq,
         | 
| 12 13 | 
             
                ObjectTypeLib.gtz
         | 
| 13 14 | 
             
            } for ObjectType global;
         | 
| 14 15 |  | 
| @@ -71,48 +72,52 @@ function POLICY() pure returns (ObjectType) { | |
| 71 72 | 
             
                return ObjectType.wrap(21);
         | 
| 72 73 | 
             
            }
         | 
| 73 74 |  | 
| 74 | 
            -
            function  | 
| 75 | 
            +
            function PREMIUM() pure returns (ObjectType) {
         | 
| 75 76 | 
             
                return ObjectType.wrap(22);
         | 
| 76 77 | 
             
            }
         | 
| 77 78 |  | 
| 79 | 
            +
            function CLAIM() pure returns (ObjectType) {
         | 
| 80 | 
            +
                return ObjectType.wrap(23);
         | 
| 81 | 
            +
            }
         | 
| 82 | 
            +
             | 
| 78 83 | 
             
            function PAYOUT() pure returns (ObjectType) {
         | 
| 79 | 
            -
                return ObjectType.wrap( | 
| 84 | 
            +
                return ObjectType.wrap(24); 
         | 
| 80 85 | 
             
            }
         | 
| 81 86 |  | 
| 82 87 | 
             
            function RISK() pure returns (ObjectType) {
         | 
| 83 | 
            -
                return ObjectType.wrap( | 
| 88 | 
            +
                return ObjectType.wrap(25);
         | 
| 84 89 | 
             
            }
         | 
| 85 90 |  | 
| 86 91 | 
             
            function PRICE() pure returns (ObjectType) {
         | 
| 87 | 
            -
                return ObjectType.wrap( | 
| 92 | 
            +
                return ObjectType.wrap(26);
         | 
| 88 93 | 
             
            }
         | 
| 89 94 |  | 
| 90 95 | 
             
            function REQUEST() pure returns (ObjectType) {
         | 
| 91 | 
            -
                return ObjectType.wrap( | 
| 96 | 
            +
                return ObjectType.wrap(27);
         | 
| 92 97 | 
             
            }
         | 
| 93 98 |  | 
| 94 99 | 
             
            function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
         | 
| 95 | 
            -
                return ObjectType.wrap( | 
| 100 | 
            +
                return ObjectType.wrap(28);
         | 
| 96 101 | 
             
            }
         | 
| 97 102 |  | 
| 98 103 | 
             
            function DISTRIBUTOR() pure returns (ObjectType) {
         | 
| 99 | 
            -
                return ObjectType.wrap( | 
| 104 | 
            +
                return ObjectType.wrap(29);
         | 
| 100 105 | 
             
            }
         | 
| 101 106 |  | 
| 102 107 | 
             
            function REFERRAL() pure returns (ObjectType) {
         | 
| 103 | 
            -
                return ObjectType.wrap( | 
| 108 | 
            +
                return ObjectType.wrap(30);
         | 
| 104 109 | 
             
            }
         | 
| 105 110 |  | 
| 106 111 | 
             
            function BUNDLE() pure returns (ObjectType) {
         | 
| 107 | 
            -
                return ObjectType.wrap( | 
| 112 | 
            +
                return ObjectType.wrap(31);
         | 
| 108 113 | 
             
            }
         | 
| 109 114 |  | 
| 110 115 | 
             
            function TARGET() pure returns (ObjectType) {
         | 
| 111 | 
            -
                return ObjectType.wrap( | 
| 116 | 
            +
                return ObjectType.wrap(32);
         | 
| 112 117 | 
             
            }
         | 
| 113 118 |  | 
| 114 119 | 
             
            function STAKE() pure returns (ObjectType) {
         | 
| 115 | 
            -
                return ObjectType.wrap( | 
| 120 | 
            +
                return ObjectType.wrap(33);
         | 
| 116 121 | 
             
            }
         | 
| 117 122 |  | 
| 118 123 | 
             
            /// @dev Object type that includes any other object type.
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            //  | 
| 5 | 
            -
            type PayoutId is  | 
| 4 | 
            +
            // uint40 allows for 65'535 claims with 16'777'216 payouts each per policy
         | 
| 5 | 
            +
            type PayoutId is uint40;
         | 
| 6 6 |  | 
| 7 7 | 
             
            import {ClaimId} from "./ClaimId.sol";
         | 
| 8 8 | 
             
            import {PAYOUT} from "./ObjectType.sol";
         | 
| @@ -39,21 +39,21 @@ library PayoutIdLib { | |
| 39 39 | 
             
                }
         | 
| 40 40 |  | 
| 41 41 | 
             
                /// @dev Converts an uint into a PayoutId.
         | 
| 42 | 
            -
                function toPayoutId(ClaimId claimId,  | 
| 43 | 
            -
                    return PayoutId.wrap((ClaimId.unwrap(claimId) <<  | 
| 42 | 
            +
                function toPayoutId(ClaimId claimId, uint24 payoutNo) public pure returns (PayoutId) {
         | 
| 43 | 
            +
                    return PayoutId.wrap((uint40(ClaimId.unwrap(claimId)) << 24) + payoutNo);
         | 
| 44 44 | 
             
                }
         | 
| 45 45 |  | 
| 46 46 | 
             
                function toClaimId(PayoutId payoutId) public pure returns (ClaimId) {
         | 
| 47 | 
            -
                    return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >>  | 
| 47 | 
            +
                    return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 24));
         | 
| 48 48 | 
             
                }
         | 
| 49 49 |  | 
| 50 | 
            -
                function toPayoutNo(PayoutId payoutId) public pure returns ( | 
| 51 | 
            -
                    return  | 
| 50 | 
            +
                function toPayoutNo(PayoutId payoutId) public pure returns (uint24) {
         | 
| 51 | 
            +
                    return uint24(PayoutId.unwrap(payoutId) & 16777215);
         | 
| 52 52 | 
             
                }
         | 
| 53 53 |  | 
| 54 54 | 
             
                /// @dev Converts the PayoutId to a uint.
         | 
| 55 | 
            -
                function toInt(PayoutId a) public pure returns ( | 
| 56 | 
            -
                    return  | 
| 55 | 
            +
                function toInt(PayoutId a) public pure returns (uint40) {
         | 
| 56 | 
            +
                    return PayoutId.unwrap(a);
         | 
| 57 57 | 
             
                }
         | 
| 58 58 |  | 
| 59 59 | 
             
                /// @dev Returns true if the value is non-zero (> 0).
         | 
| @@ -77,6 +77,6 @@ library PayoutIdLib { | |
| 77 77 | 
             
                        bytes31(
         | 
| 78 78 | 
             
                            bytes15(
         | 
| 79 79 | 
             
                                uint120(
         | 
| 80 | 
            -
                                    (NftId.unwrap(policyNftId) <<  | 
| 80 | 
            +
                                    (NftId.unwrap(policyNftId) << 40) + PayoutId.unwrap(payoutId)))));
         | 
| 81 81 | 
             
                }
         | 
| 82 82 | 
             
            }
         | 
| @@ -10,7 +10,9 @@ type RiskId is bytes8; | |
| 10 10 | 
             
            using {
         | 
| 11 11 | 
             
                eqRiskId as ==, 
         | 
| 12 12 | 
             
                neRiskId as !=,
         | 
| 13 | 
            -
                RiskIdLib.toKey32
         | 
| 13 | 
            +
                RiskIdLib.toKey32,
         | 
| 14 | 
            +
                RiskIdLib.eq,
         | 
| 15 | 
            +
                RiskIdLib.eqz
         | 
| 14 16 | 
             
            } for RiskId global;
         | 
| 15 17 |  | 
| 16 18 | 
             
            // general pure free functions
         | 
| @@ -26,6 +28,10 @@ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) { | |
| 26 28 | 
             
            }
         | 
| 27 29 |  | 
| 28 30 | 
             
            library RiskIdLib {
         | 
| 31 | 
            +
                function zero() public pure returns (RiskId) {
         | 
| 32 | 
            +
                    return RiskId.wrap(bytes8(0));
         | 
| 33 | 
            +
                }
         | 
| 34 | 
            +
             | 
| 29 35 | 
             
                // @dev Converts a role string into a role id.
         | 
| 30 36 | 
             
                function toRiskId(string memory risk) public pure returns (RiskId) {
         | 
| 31 37 | 
             
                    return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
         | 
| @@ -40,4 +46,12 @@ library RiskIdLib { | |
| 40 46 | 
             
                function toKeyId(RiskId id) public pure returns (KeyId keyId) {
         | 
| 41 47 | 
             
                    return KeyId.wrap(bytes31(RiskId.unwrap(id)));
         | 
| 42 48 | 
             
                }
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
         | 
| 51 | 
            +
                    return eqRiskId(a, b);
         | 
| 52 | 
            +
                }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                function eqz(RiskId a) public pure returns (bool isZero) {
         | 
| 55 | 
            +
                    return eqRiskId(a, zero());
         | 
| 56 | 
            +
                }
         | 
| 43 57 | 
             
            }
         | 
| @@ -54,18 +54,6 @@ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2) | |
| 54 54 | 
             
            /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
         | 
| 55 55 | 
             
            function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); } 
         | 
| 56 56 |  | 
| 57 | 
            -
            /// @dev instance specific  role to register/own a product component
         | 
| 58 | 
            -
            function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(11); }
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            /// @dev instance specific  role to register/own an oracle component
         | 
| 61 | 
            -
            function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(12); }
         | 
| 62 | 
            -
             | 
| 63 | 
            -
            /// @dev instance specific role to register/own a distribution component
         | 
| 64 | 
            -
            function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(13); }
         | 
| 65 | 
            -
             | 
| 66 | 
            -
            /// @dev instance specific  role to register/own a pool component
         | 
| 67 | 
            -
            function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(14); }
         | 
| 68 | 
            -
             | 
| 69 57 | 
             
            //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
         | 
| 70 58 | 
             
            // created and assigned during initial deployment for registry and staking
         | 
| 71 59 | 
             
            // granting for instances and components in instance service
         | 
| @@ -6,9 +6,14 @@ type Seconds is uint40; | |
| 6 6 | 
             
            using {
         | 
| 7 7 | 
             
                SecondsEq as ==,
         | 
| 8 8 | 
             
                SecondsGt as >,
         | 
| 9 | 
            +
                SecondsAdd as +,
         | 
| 9 10 | 
             
                SecondsLib.eqz,
         | 
| 10 11 | 
             
                SecondsLib.gtz,
         | 
| 11 | 
            -
                SecondsLib. | 
| 12 | 
            +
                SecondsLib.eq,
         | 
| 13 | 
            +
                SecondsLib.gt,
         | 
| 14 | 
            +
                SecondsLib.lt,
         | 
| 15 | 
            +
                SecondsLib.toInt,
         | 
| 16 | 
            +
                SecondsLib.add
         | 
| 12 17 | 
             
            } for Seconds global;
         | 
| 13 18 |  | 
| 14 19 | 
             
            function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
         | 
| @@ -19,6 +24,11 @@ function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) { | |
| 19 24 | 
             
                return SecondsLib.gt(duration1, duration2);
         | 
| 20 25 | 
             
            }
         | 
| 21 26 |  | 
| 27 | 
            +
            function SecondsAdd(Seconds duration1, Seconds duration2) pure returns (Seconds) {
         | 
| 28 | 
            +
                return SecondsLib.add(duration1, duration2);
         | 
| 29 | 
            +
            }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 22 32 | 
             
            library SecondsLib {
         | 
| 23 33 |  | 
| 24 34 | 
             
                error ErrorSecondsLibDurationTooBig(uint256 duration);
         | 
| @@ -70,6 +80,16 @@ library SecondsLib { | |
| 70 80 | 
             
                    return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
         | 
| 71 81 | 
             
                }
         | 
| 72 82 |  | 
| 83 | 
            +
                /// @dev return true if duration1 is smaller than duration2
         | 
| 84 | 
            +
                function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
         | 
| 85 | 
            +
                    return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
         | 
| 86 | 
            +
                }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                /// @dev return add duration1 and duration2
         | 
| 89 | 
            +
                function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
         | 
| 90 | 
            +
                    return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
         | 
| 91 | 
            +
                }
         | 
| 92 | 
            +
             | 
| 73 93 | 
             
                function toInt(Seconds duration) public pure returns (uint256) {
         | 
| 74 94 | 
             
                    return uint256(uint40(Seconds.unwrap(duration)));
         | 
| 75 95 | 
             
                }
         | 
| @@ -9,6 +9,7 @@ using { | |
| 9 9 | 
             
                eqStateId as ==, 
         | 
| 10 10 | 
             
                neStateId as !=, 
         | 
| 11 11 | 
             
                StateIdLib.eqz,
         | 
| 12 | 
            +
                StateIdLib.eq,
         | 
| 12 13 | 
             
                StateIdLib.gtz,
         | 
| 13 14 | 
             
                StateIdLib.toInt
         | 
| 14 15 | 
             
            } for StateId global;
         | 
| @@ -27,10 +28,18 @@ function DEPLOYING() pure returns (StateId) { | |
| 27 28 | 
             
                return toStateId(3);
         | 
| 28 29 | 
             
            }
         | 
| 29 30 |  | 
| 30 | 
            -
            function  | 
| 31 | 
            +
            function DEPLOYED() pure returns (StateId) {
         | 
| 31 32 | 
             
                return toStateId(4);
         | 
| 32 33 | 
             
            }
         | 
| 33 34 |  | 
| 35 | 
            +
            function ACTIVE() pure returns (StateId) {
         | 
| 36 | 
            +
                return toStateId(5);
         | 
| 37 | 
            +
            }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            function SKIPPED() pure returns (StateId) {
         | 
| 40 | 
            +
                return toStateId(6);
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
             | 
| 34 43 | 
             
            function APPLIED() pure returns (StateId) {
         | 
| 35 44 | 
             
                return toStateId(10);
         | 
| 36 45 | 
             
            }
         | 
| @@ -113,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) { | |
| 113 122 |  | 
| 114 123 | 
             
            // library functions that operate on user defined type
         | 
| 115 124 | 
             
            library StateIdLib {
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                function zero() public pure returns (StateId) {
         | 
| 127 | 
            +
                    return StateId.wrap(0);
         | 
| 128 | 
            +
                }
         | 
| 129 | 
            +
             | 
| 116 130 | 
             
                /// @dev Converts the NftId to a uint256.
         | 
| 117 131 | 
             
                function toInt(StateId stateId) public pure returns (uint96) {
         | 
| 118 132 | 
             
                    return uint96(StateId.unwrap(stateId));
         | 
| @@ -12,6 +12,12 @@ using { | |
| 12 12 | 
             
                lteTimestamp as <=,
         | 
| 13 13 | 
             
                eqTimestamp as ==,
         | 
| 14 14 | 
             
                neTimestamp as !=,
         | 
| 15 | 
            +
                TimestampLib.eq,
         | 
| 16 | 
            +
                TimestampLib.ne,
         | 
| 17 | 
            +
                TimestampLib.gt,
         | 
| 18 | 
            +
                TimestampLib.gte,
         | 
| 19 | 
            +
                TimestampLib.lt,
         | 
| 20 | 
            +
                TimestampLib.lte,
         | 
| 15 21 | 
             
                TimestampLib.gtz,
         | 
| 16 22 | 
             
                TimestampLib.eqz,
         | 
| 17 23 | 
             
                TimestampLib.addSeconds,
         | 
| @@ -50,7 +56,7 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) { | |
| 50 56 |  | 
| 51 57 | 
             
            /// @dev Converts the uint256 to a Timestamp.
         | 
| 52 58 | 
             
            function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
         | 
| 53 | 
            -
                return  | 
| 59 | 
            +
                return TimestampLib.toTimestamp(timestamp);
         | 
| 54 60 | 
             
            }
         | 
| 55 61 |  | 
| 56 62 | 
             
            // TODO move to TimestampLib and rename to zero()
         | 
| @@ -72,6 +78,10 @@ library TimestampLib { | |
| 72 78 | 
             
                function blockTimestamp() public view returns (Timestamp) {
         | 
| 73 79 | 
             
                    return Timestamp.wrap(uint40(block.timestamp));
         | 
| 74 80 | 
             
                }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                function toTimestamp(uint256 timestamp) public pure returns (Timestamp) {
         | 
| 83 | 
            +
                    return Timestamp.wrap(uint40(timestamp));
         | 
| 84 | 
            +
                }
         | 
| 75 85 |  | 
| 76 86 | 
             
                /// @dev return true if Timestamp a is after Timestamp b
         | 
| 77 87 | 
             
                function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {
         | 
| @@ -344,6 +344,10 @@ library UFixedLib { | |
| 344 344 | 
             
                    return UFixed.wrap(0);
         | 
| 345 345 | 
             
                }
         | 
| 346 346 |  | 
| 347 | 
            +
                function one() public pure returns (UFixed) {
         | 
| 348 | 
            +
                    return UFixed.wrap(MULTIPLIER);
         | 
| 349 | 
            +
                }
         | 
| 350 | 
            +
             | 
| 347 351 | 
             
                /// @dev return the absolute delta between two UFixed numbers
         | 
| 348 352 | 
             
                function delta(UFixed a, UFixed b) public pure returns (UFixed) {
         | 
| 349 353 | 
             
                    return deltaUFixed(a, b);
         |