@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ceed5e3-261
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 +15 -84
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +322 -252
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +249 -174
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +271 -83
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +299 -2118
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +319 -59
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +433 -2856
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +642 -327
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +416 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +132 -67
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +283 -213
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +480 -213
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +527 -284
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +129 -90
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +271 -134
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +408 -219
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +433 -282
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +188 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -77
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +430 -34
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +373 -98
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +769 -98
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +101 -114
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
- 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 +104 -22
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +597 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/{components → distribution}/Distribution.sol +49 -75
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +11 -37
- package/contracts/{instance/service → distribution}/IDistributionService.sol +25 -25
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +60 -65
- package/contracts/instance/IInstanceService.sol +59 -21
- package/contracts/instance/Instance.sol +175 -203
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +159 -60
- package/contracts/instance/InstanceService.sol +296 -333
- package/contracts/instance/InstanceServiceManager.sol +11 -21
- package/contracts/instance/InstanceStore.sol +269 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
- package/contracts/instance/module/IAccess.sol +19 -20
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
- package/contracts/instance/module/IDistribution.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +53 -16
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +46 -21
- package/contracts/registry/IRegistryService.sol +39 -37
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +215 -97
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +73 -90
- package/contracts/registry/RegistryServiceManager.sol +21 -30
- package/contracts/registry/ReleaseManager.sol +400 -195
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +741 -0
- package/contracts/shared/AccessManagerExtended.sol +481 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +617 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +2 -2
- package/contracts/shared/IPolicyHolder.sol +29 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +14 -7
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +3 -16
- package/contracts/shared/PolicyHolder.sol +40 -19
- package/contracts/shared/ProxyManager.sol +34 -4
- package/contracts/shared/Registerable.sol +15 -14
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +47 -22
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/type/ObjectType.sol +241 -0
- package/contracts/{types → type}/PayoutId.sol +33 -5
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +201 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +34 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +4 -3
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1254
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -753
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1120
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/Component.sol +0 -241
- package/contracts/components/IComponent.sol +0 -54
- package/contracts/components/IPoolComponent.sol +0 -87
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -254
- package/contracts/components/Product.sol +0 -285
- package/contracts/instance/InstanceAccessManager.sol +0 -297
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ApplicationService.sol +0 -268
- package/contracts/instance/service/BundleService.sol +0 -298
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/DistributionService.sol +0 -366
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -54
- package/contracts/instance/service/IClaimService.sol +0 -61
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -476
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -233
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -156
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,80 +1,84 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {DISTRIBUTION} from "../
|
5
|
-
import {IDistributionService} from "
|
6
|
-
import {IProductService} from "../
|
7
|
-
import {NftId,
|
8
|
-
import {ReferralId, ReferralStatus, ReferralLib} from "../
|
9
|
-
import {Fee, FeeLib} from "../
|
10
|
-
import {
|
4
|
+
import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
|
5
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
6
|
+
import {IProductService} from "../product/IProductService.sol";
|
7
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
8
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
9
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
|
+
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
11
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
11
12
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
12
13
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
13
14
|
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
15
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
18
16
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
|
-
import {UFixed} from "../
|
20
|
-
import {DistributorType} from "../
|
21
|
-
import {Timestamp, TimestampLib} from "../
|
17
|
+
import {UFixed} from "../type/UFixed.sol";
|
18
|
+
import {DistributorType} from "../type/DistributorType.sol";
|
19
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
22
20
|
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
23
21
|
|
24
22
|
|
25
23
|
abstract contract Distribution is
|
26
|
-
|
24
|
+
InstanceLinkedComponent,
|
27
25
|
IDistributionComponent
|
28
26
|
{
|
29
27
|
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
|
30
28
|
bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
|
31
29
|
|
32
30
|
struct DistributionStorage {
|
33
|
-
|
34
|
-
TokenHandler _tokenHandler;
|
31
|
+
IComponentService _componentService;
|
35
32
|
IDistributionService _distributionService;
|
36
33
|
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
37
34
|
}
|
38
35
|
|
36
|
+
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
37
|
+
|
39
38
|
function initializeDistribution(
|
40
39
|
address registry,
|
41
40
|
NftId instanceNftId,
|
41
|
+
address initialOwner,
|
42
42
|
string memory name,
|
43
43
|
address token,
|
44
|
-
|
45
|
-
|
46
|
-
bytes memory data
|
44
|
+
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
45
|
+
bytes memory componentData // component specifidc data
|
47
46
|
)
|
48
47
|
public
|
49
48
|
virtual
|
50
49
|
onlyInitializing()
|
51
50
|
{
|
52
|
-
|
51
|
+
initializeInstanceLinkedComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData, componentData);
|
53
52
|
|
54
53
|
DistributionStorage storage $ = _getDistributionStorage();
|
55
|
-
|
56
|
-
$.
|
57
|
-
$._tokenHandler = new TokenHandler(token);
|
58
|
-
$._distributionService = getInstance().getDistributionService();
|
54
|
+
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
55
|
+
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
59
56
|
|
60
57
|
registerInterface(type(IDistributionComponent).interfaceId);
|
61
58
|
}
|
62
59
|
|
60
|
+
function register()
|
61
|
+
external
|
62
|
+
virtual
|
63
|
+
onlyOwner()
|
64
|
+
{
|
65
|
+
_getDistributionStorage()._componentService.registerDistribution();
|
66
|
+
}
|
67
|
+
|
63
68
|
function setFees(
|
64
|
-
Fee memory distributionFee
|
69
|
+
Fee memory distributionFee,
|
70
|
+
Fee memory minDistributionOwnerFee
|
65
71
|
)
|
66
72
|
external
|
67
73
|
override
|
68
|
-
onlyOwner
|
74
|
+
onlyOwner()
|
69
75
|
restricted()
|
70
76
|
{
|
71
|
-
_getDistributionStorage().
|
77
|
+
_getDistributionStorage()._componentService.setDistributionFees(
|
78
|
+
distributionFee,
|
79
|
+
minDistributionOwnerFee);
|
72
80
|
}
|
73
81
|
|
74
|
-
function getDistributionFee() external view returns (Fee memory distributionFee) {
|
75
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
76
|
-
return $._distributionFee;
|
77
|
-
}
|
78
82
|
|
79
83
|
function createDistributorType(
|
80
84
|
string memory name,
|
@@ -112,7 +116,9 @@ abstract contract Distribution is
|
|
112
116
|
returns(NftId distributorNftId)
|
113
117
|
{
|
114
118
|
DistributionStorage storage $ = _getDistributionStorage();
|
115
|
-
|
119
|
+
if($._distributorNftId[distributor].gtz()) {
|
120
|
+
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
121
|
+
}
|
116
122
|
|
117
123
|
distributorNftId = $._distributionService.createDistributor(
|
118
124
|
distributor,
|
@@ -132,10 +138,11 @@ abstract contract Distribution is
|
|
132
138
|
// and add it
|
133
139
|
{
|
134
140
|
DistributionStorage storage $ = _getDistributionStorage();
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
141
|
+
// TODO re-enable once implemented
|
142
|
+
// $._distributionService.updateDistributorType(
|
143
|
+
// distributorNftId,
|
144
|
+
// distributorType,
|
145
|
+
// data);
|
139
146
|
}
|
140
147
|
|
141
148
|
/**
|
@@ -190,7 +197,7 @@ abstract contract Distribution is
|
|
190
197
|
)
|
191
198
|
{
|
192
199
|
ReferralId referralId = getReferralId(referralCode);
|
193
|
-
return
|
200
|
+
return _getInstanceReader().getDiscountPercentage(referralId);
|
194
201
|
}
|
195
202
|
|
196
203
|
|
@@ -219,19 +226,6 @@ abstract contract Distribution is
|
|
219
226
|
return 0 * netPremiumAmount;
|
220
227
|
}
|
221
228
|
|
222
|
-
function processSale(
|
223
|
-
ReferralId referralId,
|
224
|
-
uint256 premiumAmount
|
225
|
-
)
|
226
|
-
external
|
227
|
-
onlyOwner
|
228
|
-
restricted()
|
229
|
-
virtual override
|
230
|
-
{
|
231
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
232
|
-
$._distributionService.processSale(referralId, premiumAmount);
|
233
|
-
}
|
234
|
-
|
235
229
|
function processRenewal(
|
236
230
|
ReferralId referralId,
|
237
231
|
uint256 feeAmount
|
@@ -244,38 +238,18 @@ abstract contract Distribution is
|
|
244
238
|
// default is no action
|
245
239
|
}
|
246
240
|
|
247
|
-
function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
248
|
-
InstanceReader reader = getInstance().getInstanceReader();
|
249
|
-
setupInfo = reader.getDistributionSetupInfo(getNftId());
|
250
|
-
|
251
|
-
// fallback to initial setup info (wallet is always != address(0))
|
252
|
-
if(setupInfo.wallet == address(0)) {
|
253
|
-
setupInfo = _getInitialSetupInfo();
|
254
|
-
}
|
255
|
-
}
|
256
|
-
|
257
|
-
function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
258
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
259
|
-
return ISetup.DistributionSetupInfo(
|
260
|
-
zeroNftId(),
|
261
|
-
$._tokenHandler,
|
262
|
-
$._distributionFee,
|
263
|
-
address(this)
|
264
|
-
);
|
265
|
-
}
|
266
|
-
|
267
241
|
|
268
|
-
function
|
242
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
269
243
|
// keep track of distributor nft owner
|
270
244
|
emit LogDistributorUpdated(to, msg.sender);
|
271
245
|
DistributionStorage storage $ = _getDistributionStorage();
|
272
|
-
$._distributorNftId[from] =
|
273
|
-
$._distributorNftId[to] = toNftId(tokenId);
|
246
|
+
$._distributorNftId[from] = NftIdLib.zero();
|
247
|
+
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
274
248
|
}
|
275
249
|
|
276
250
|
|
277
251
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
278
|
-
function isVerifying() external
|
252
|
+
function isVerifying() external pure returns (bool verifying) {
|
279
253
|
return true;
|
280
254
|
}
|
281
255
|
|
@@ -0,0 +1,297 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../instance/IInstance.sol";
|
6
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
13
|
+
|
14
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
16
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
+
import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
|
18
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
19
|
+
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
21
|
+
import {RoleId} from "../type/RoleId.sol";
|
22
|
+
|
23
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
24
|
+
import {Versionable} from "../shared/Versionable.sol";
|
25
|
+
|
26
|
+
import {IService} from "../shared/IService.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
|
+
import {InstanceService} from "../instance/InstanceService.sol";
|
30
|
+
import {IComponent} from "../shared/IComponent.sol";
|
31
|
+
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
32
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
33
|
+
import {IPricingService} from "../product/IPricingService.sol";
|
34
|
+
|
35
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
36
|
+
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
37
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
38
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
39
|
+
import {Key32} from "../type/Key32.sol";
|
40
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
41
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
42
|
+
|
43
|
+
|
44
|
+
contract DistributionService is
|
45
|
+
ComponentVerifyingService,
|
46
|
+
IDistributionService
|
47
|
+
{
|
48
|
+
using NftIdLib for NftId;
|
49
|
+
using TimestampLib for Timestamp;
|
50
|
+
using UFixedLib for UFixed;
|
51
|
+
using FeeLib for Fee;
|
52
|
+
using ReferralLib for ReferralId;
|
53
|
+
|
54
|
+
IComponentService private _componentService;
|
55
|
+
IInstanceService private _instanceService;
|
56
|
+
IRegistryService private _registryService;
|
57
|
+
|
58
|
+
function _initialize(
|
59
|
+
address owner,
|
60
|
+
bytes memory data
|
61
|
+
)
|
62
|
+
internal
|
63
|
+
initializer
|
64
|
+
virtual override
|
65
|
+
{
|
66
|
+
address initialOwner;
|
67
|
+
address registryAddress;
|
68
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
69
|
+
// TODO while DistributionService is not deployed in DistributionServiceManager constructor
|
70
|
+
// owner is DistributionServiceManager deployer
|
71
|
+
initializeService(registryAddress, address(0), owner);
|
72
|
+
|
73
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
74
|
+
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
75
|
+
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
76
|
+
|
77
|
+
registerInterface(type(IDistributionService).interfaceId);
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
function createDistributorType(
|
82
|
+
string memory name,
|
83
|
+
UFixed minDiscountPercentage,
|
84
|
+
UFixed maxDiscountPercentage,
|
85
|
+
UFixed commissionPercentage,
|
86
|
+
uint32 maxReferralCount,
|
87
|
+
uint32 maxReferralLifetime,
|
88
|
+
bool allowSelfReferrals,
|
89
|
+
bool allowRenewals,
|
90
|
+
bytes memory data
|
91
|
+
)
|
92
|
+
external
|
93
|
+
returns (DistributorType distributorType)
|
94
|
+
{
|
95
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
96
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
97
|
+
|
98
|
+
{
|
99
|
+
NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
|
100
|
+
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
101
|
+
UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
|
102
|
+
UFixed maxDiscountPercentageLimit = productInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
|
103
|
+
if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
|
104
|
+
revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
109
|
+
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
110
|
+
name,
|
111
|
+
minDiscountPercentage,
|
112
|
+
maxDiscountPercentage,
|
113
|
+
commissionPercentage,
|
114
|
+
maxReferralCount,
|
115
|
+
maxReferralLifetime,
|
116
|
+
allowSelfReferrals,
|
117
|
+
allowRenewals,
|
118
|
+
data);
|
119
|
+
|
120
|
+
instance.getInstanceStore().createDistributorType(distributorType, info);
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
function createDistributor(
|
125
|
+
address distributor,
|
126
|
+
DistributorType distributorType,
|
127
|
+
bytes memory data
|
128
|
+
)
|
129
|
+
external
|
130
|
+
virtual
|
131
|
+
returns (NftId distributorNftId)
|
132
|
+
{
|
133
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
134
|
+
|
135
|
+
distributorNftId = _registryService.registerDistributor(
|
136
|
+
IRegistry.ObjectInfo(
|
137
|
+
NftIdLib.zero(),
|
138
|
+
distributionNftId,
|
139
|
+
DISTRIBUTOR(),
|
140
|
+
true, // intercepting property for bundles is defined on pool
|
141
|
+
address(0),
|
142
|
+
distributor,
|
143
|
+
""
|
144
|
+
));
|
145
|
+
|
146
|
+
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
|
147
|
+
distributorType,
|
148
|
+
true, // active
|
149
|
+
data,
|
150
|
+
AmountLib.zero(),
|
151
|
+
0);
|
152
|
+
|
153
|
+
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
154
|
+
}
|
155
|
+
|
156
|
+
// function updateDistributorType(
|
157
|
+
// NftId distributorNftId,
|
158
|
+
// DistributorType distributorType,
|
159
|
+
// bytes memory data
|
160
|
+
// )
|
161
|
+
// external
|
162
|
+
// virtual
|
163
|
+
// {
|
164
|
+
// (, IInstance instance) = _getAndVerifyCallingDistribution();
|
165
|
+
// InstanceReader instanceReader = instance.getInstanceReader();
|
166
|
+
// IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
|
167
|
+
// distributorInfo.distributorType = distributorType;
|
168
|
+
// distributorInfo.data = data;
|
169
|
+
// instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
170
|
+
// }
|
171
|
+
|
172
|
+
|
173
|
+
function createReferral(
|
174
|
+
NftId distributorNftId,
|
175
|
+
string memory code,
|
176
|
+
UFixed discountPercentage,
|
177
|
+
uint32 maxReferrals,
|
178
|
+
Timestamp expiryAt,
|
179
|
+
bytes memory data
|
180
|
+
)
|
181
|
+
external
|
182
|
+
virtual
|
183
|
+
returns (ReferralId referralId)
|
184
|
+
{
|
185
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
186
|
+
|
187
|
+
if (bytes(code).length == 0) {
|
188
|
+
revert ErrorIDistributionServiceInvalidReferral(code);
|
189
|
+
}
|
190
|
+
if (expiryAt.eqz()) {
|
191
|
+
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
192
|
+
}
|
193
|
+
|
194
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
195
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
196
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
197
|
+
|
198
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
199
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
200
|
+
}
|
201
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
202
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
203
|
+
}
|
204
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
205
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
206
|
+
}
|
207
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
208
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
209
|
+
}
|
210
|
+
|
211
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
212
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
213
|
+
distributorNftId,
|
214
|
+
code,
|
215
|
+
discountPercentage,
|
216
|
+
maxReferrals,
|
217
|
+
0, // used referrals
|
218
|
+
expiryAt,
|
219
|
+
data
|
220
|
+
);
|
221
|
+
|
222
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
223
|
+
return referralId;
|
224
|
+
}
|
225
|
+
|
226
|
+
|
227
|
+
function processSale(
|
228
|
+
NftId distributionNftId, // assume always of distribution type
|
229
|
+
ReferralId referralId,
|
230
|
+
IPolicy.Premium memory premium
|
231
|
+
)
|
232
|
+
external
|
233
|
+
virtual
|
234
|
+
restricted
|
235
|
+
{
|
236
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
237
|
+
InstanceReader reader = instance.getInstanceReader();
|
238
|
+
InstanceStore store = instance.getInstanceStore();
|
239
|
+
|
240
|
+
// get distribution owner fee amount
|
241
|
+
Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
|
242
|
+
|
243
|
+
// update referral/distributor info if applicable
|
244
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
245
|
+
|
246
|
+
// increase distribution balance by commission amount and distribution owner fee
|
247
|
+
Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
|
248
|
+
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
249
|
+
|
250
|
+
// update book keeping for referral info
|
251
|
+
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
252
|
+
referralInfo.usedReferrals += 1;
|
253
|
+
store.updateReferral(referralId, referralInfo, KEEP_STATE());
|
254
|
+
|
255
|
+
// update book keeping for distributor info
|
256
|
+
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
257
|
+
// TODO refactor sum of commission amount into a fee balance for distributors
|
258
|
+
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
259
|
+
distributorInfo.numPoliciesSold += 1;
|
260
|
+
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
261
|
+
} else {
|
262
|
+
|
263
|
+
// increase distribution balance by distribution owner fee
|
264
|
+
_componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
|
269
|
+
if (distributionNftId.eqz() || referralId.eqz()) {
|
270
|
+
return false;
|
271
|
+
}
|
272
|
+
|
273
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
274
|
+
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
275
|
+
|
276
|
+
if (info.distributorNftId.eqz()) {
|
277
|
+
return false;
|
278
|
+
}
|
279
|
+
|
280
|
+
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
|
281
|
+
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
282
|
+
}
|
283
|
+
|
284
|
+
function _getInstanceForDistribution(NftId distributionNftId)
|
285
|
+
internal
|
286
|
+
view
|
287
|
+
returns(IInstance instance)
|
288
|
+
{
|
289
|
+
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
290
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
291
|
+
return IInstance(instanceAddress);
|
292
|
+
}
|
293
|
+
|
294
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
295
|
+
return DISTRIBUTION();
|
296
|
+
}
|
297
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {DistributionService} from "./DistributionService.sol";
|
7
|
+
import {Registry} from "../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
+
import {REGISTRY} from "../type/ObjectType.sol";
|
10
|
+
|
11
|
+
contract DistributionServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
DistributionService private _distributionService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
|
+
constructor(
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
21
|
+
ProxyManager(registryAddress)
|
22
|
+
{
|
23
|
+
DistributionService distSrv = new DistributionService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
26
|
+
address(distSrv),
|
27
|
+
data,
|
28
|
+
salt);
|
29
|
+
|
30
|
+
_distributionService = DistributionService(address(versionable));
|
31
|
+
}
|
32
|
+
|
33
|
+
//--- view functions ----------------------------------------------------//
|
34
|
+
function getDistributionService()
|
35
|
+
external
|
36
|
+
view
|
37
|
+
returns (DistributionService distributionService)
|
38
|
+
{
|
39
|
+
return _distributionService;
|
40
|
+
}
|
41
|
+
|
42
|
+
}
|
@@ -1,23 +1,21 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Fee} from "../
|
5
|
-
import {
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {Timestamp} from "../types/Timestamp.sol";
|
4
|
+
import {Fee} from "../type/Fee.sol";
|
5
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
|
+
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
+
import {UFixed} from "../type/UFixed.sol";
|
10
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
12
11
|
|
13
|
-
interface IDistributionComponent is
|
12
|
+
interface IDistributionComponent is IInstanceLinkedComponent {
|
14
13
|
|
15
14
|
event LogDistributorUpdated(address to, address caller);
|
16
15
|
|
17
|
-
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
18
|
-
|
19
16
|
function setFees(
|
20
|
-
Fee memory distributionFee
|
17
|
+
Fee memory distributionFee,
|
18
|
+
Fee memory minDistributionOwnerFee
|
21
19
|
) external;
|
22
20
|
|
23
21
|
function createDistributorType(
|
@@ -44,33 +42,11 @@ interface IDistributionComponent is IComponent {
|
|
44
42
|
bytes memory data
|
45
43
|
) external;
|
46
44
|
|
47
|
-
/**
|
48
|
-
* @dev lets distributors create referral codes.
|
49
|
-
* referral codes need to be unique
|
50
|
-
* distributor is identified via msg.sender.
|
51
|
-
*/
|
52
|
-
function createReferral(
|
53
|
-
NftId distributorNftId,
|
54
|
-
string memory code,
|
55
|
-
UFixed discountPercentage,
|
56
|
-
uint32 maxReferrals,
|
57
|
-
Timestamp expiryAt,
|
58
|
-
bytes memory data
|
59
|
-
) external returns (ReferralId referralId);
|
60
|
-
|
61
45
|
function calculateRenewalFeeAmount(
|
62
46
|
ReferralId referralId,
|
63
47
|
uint256 netPremiumAmount
|
64
48
|
) external view returns (uint256 feeAmount);
|
65
49
|
|
66
|
-
/// @dev callback from product service when selling a policy for a specific referralId
|
67
|
-
/// the used referral id and the collected fee are provided as parameters
|
68
|
-
/// the component implementation can then process this information accordingly
|
69
|
-
function processSale(
|
70
|
-
ReferralId referralId,
|
71
|
-
uint256 feeAmount
|
72
|
-
) external;
|
73
|
-
|
74
50
|
/// @dev callback from product service when a policy is renews for a specific referralId
|
75
51
|
function processRenewal(
|
76
52
|
ReferralId referralId,
|
@@ -81,8 +57,6 @@ interface IDistributionComponent is IComponent {
|
|
81
57
|
string memory referralCode
|
82
58
|
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
83
59
|
|
84
|
-
function getDistributionFee() external view returns (Fee memory distibutionFee);
|
85
|
-
|
86
60
|
function getReferralId(
|
87
61
|
string memory referralCode
|
88
62
|
) external returns (ReferralId referralId);
|