@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e94f4c7-084
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 +6 -83
 - package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
 - package/artifacts/contracts/components/Component.sol/Component.json +68 -0
 - package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/components/Distribution.sol/Distribution.json +84 -0
 - package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
 - package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -0
 - package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +158 -0
 - package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +184 -149
 - package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +158 -0
 - package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/components/Pool.sol/Pool.json +114 -189
 - package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/components/Product.sol/Product.json +68 -0
 - package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
 - package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
 - package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
 - package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +457 -268
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +426 -476
 - package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +217 -169
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +304 -210
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
 - package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
 - package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +85 -30
 - package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
 - package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
 - 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/IComponents.sol/IComponents.json +10 -0
 - 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +175 -83
 - package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -13
 - package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +426 -233
 - package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +78 -14
 - package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +372 -86
 - package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +55 -7
 - package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +189 -139
 - package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +48 -56
 - package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -40
 - package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +246 -170
 - package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +251 -58
 - package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
 - package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +470 -41
 - package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +627 -14
 - package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
 - package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +607 -85
 - package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +71 -19
 - package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +777 -55
 - package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +72 -12
 - package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
 - package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
 - 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 +19 -0
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
 - 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 +31 -12
 - package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -36
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
 - package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
 - 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/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
 - 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 +80 -14
 - package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
 - package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
 - package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
 - package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
 - 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/test/TestFee.sol/TestFee.dbg.json +1 -1
 - package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
 - package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
 - package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
 - package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
 - package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
 - package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
 - package/artifacts/contracts/test/TestService.sol/TestService.json +101 -26
 - package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
 - package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
 - package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
 - package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
 - package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
 - package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
 - package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
 - package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
 - package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
 - package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
 - package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
 - package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
 - package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
 - package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
 - package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
 - package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
 - package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
 - package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
 - package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
 - package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
 - package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
 - package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
 - package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
 - package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
 - package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
 - package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
 - package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
 - package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
 - package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +17 -4
 - package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
 - package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
 - package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
 - package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
 - package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
 - package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
 - package/contracts/components/Component.sol +42 -10
 - package/contracts/components/Distribution.sol +6 -2
 - package/contracts/components/IComponent.sol +9 -1
 - package/contracts/components/IPoolComponent.sol +6 -44
 - package/contracts/components/Pool.sol +50 -126
 - package/contracts/components/Product.sol +141 -59
 - package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
 - package/contracts/instance/BundleManager.sol +9 -8
 - package/contracts/instance/Cloneable.sol +7 -2
 - package/contracts/instance/IInstance.sol +37 -27
 - package/contracts/instance/IInstanceService.sol +18 -9
 - package/contracts/instance/Instance.sol +117 -98
 - package/contracts/instance/InstanceAccessManager.sol +388 -158
 - package/contracts/instance/InstanceReader.sol +36 -12
 - package/contracts/instance/InstanceService.sol +193 -204
 - package/contracts/instance/ObjectManager.sol +6 -8
 - package/contracts/instance/base/ComponentService.sol +17 -30
 - package/contracts/instance/base/KeyValueStore.sol +13 -5
 - package/contracts/instance/base/Lifecycle.sol +23 -6
 - package/contracts/instance/module/IAccess.sol +21 -14
 - package/contracts/instance/module/IBundle.sol +6 -4
 - package/contracts/instance/module/IComponents.sol +41 -0
 - package/contracts/instance/module/IPolicy.sol +11 -6
 - package/contracts/instance/module/ISetup.sol +3 -16
 - package/contracts/instance/service/ApplicationService.sol +25 -19
 - package/contracts/instance/service/BundleService.sol +224 -80
 - package/contracts/instance/service/ClaimService.sol +114 -26
 - package/contracts/instance/service/DistributionService.sol +58 -77
 - package/contracts/instance/service/IApplicationService.sol +3 -7
 - package/contracts/instance/service/IBundleService.sol +72 -25
 - package/contracts/instance/service/IClaimService.sol +46 -15
 - package/contracts/instance/service/IDistributionService.sol +1 -0
 - package/contracts/instance/service/IPolicyService.sol +72 -5
 - package/contracts/instance/service/IPoolService.sol +85 -3
 - package/contracts/instance/service/PolicyService.sol +320 -143
 - package/contracts/instance/service/PoolService.sol +245 -18
 - package/contracts/instance/service/ProductService.sol +31 -54
 - package/contracts/registry/ChainNft.sol +8 -0
 - package/contracts/registry/IRegistry.sol +2 -0
 - package/contracts/registry/IRegistryService.sol +4 -3
 - package/contracts/registry/ITransferInterceptor.sol +1 -0
 - package/contracts/registry/Registry.sol +23 -20
 - package/contracts/registry/RegistryService.sol +10 -11
 - package/contracts/registry/ReleaseManager.sol +20 -18
 - package/contracts/shared/IService.sol +4 -6
 - package/contracts/shared/Service.sol +21 -7
 - package/contracts/shared/TokenHandler.sol +11 -5
 - package/contracts/test/TestService.sol +1 -1
 - package/contracts/types/Amount.sol +70 -0
 - package/contracts/types/Blocknumber.sol +1 -0
 - package/contracts/types/ClaimId.sol +25 -2
 - package/contracts/types/Fee.sol +13 -5
 - package/contracts/types/NftId.sol +8 -0
 - package/contracts/types/ObjectType.sol +6 -5
 - package/contracts/types/PayoutId.sol +33 -5
 - package/contracts/types/RoleId.sol +6 -4
 - package/contracts/types/StateId.sol +7 -2
 - package/contracts/types/Timestamp.sol +6 -0
 - package/contracts/types/UFixed.sol +1 -0
 - package/contracts/types/Version.sol +1 -0
 - package/package.json +1 -1
 
    
        package/README.md
    CHANGED
    
    | 
         @@ -1,18 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # GIF-Next (Generic Insurance Framework, next version)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            ```mermaid
         
     | 
| 
       5 
     | 
    
         
            -
              graph TD
         
     | 
| 
       6 
     | 
    
         
            -
                  IPoolComponent --> IComponent
         
     | 
| 
       7 
     | 
    
         
            -
                  IComponent --> IRegisterable
         
     | 
| 
       8 
     | 
    
         
            -
                  IComponent --> ITransferInterceptor
         
     | 
| 
       9 
     | 
    
         
            -
                  IRegistryService --> IService
         
     | 
| 
       10 
     | 
    
         
            -
                  IService-->IRegisterable
         
     | 
| 
       11 
     | 
    
         
            -
                  IService-->IVersionable
         
     | 
| 
       12 
     | 
    
         
            -
                  IRegisterable-->INftOwnable
         
     | 
| 
       13 
     | 
    
         
            -
                  INftOwnable-->IERC165
         
     | 
| 
       14 
     | 
    
         
            -
            ```
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
4 
     | 
    
         
             
            ## Add OpenZeppelin V5 Dependencies
         
     | 
| 
       17 
5 
     | 
    
         | 
| 
       18 
6 
     | 
    
         
             
            ```shell
         
     | 
| 
         @@ -40,6 +28,10 @@ This repository uses submodules. To checkout or update to the latest submodules, 
     | 
|
| 
       40 
28 
     | 
    
         
             
            git submodule update --recursive
         
     | 
| 
       41 
29 
     | 
    
         
             
            ```
         
     | 
| 
       42 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
            ## Example components
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            A (very early) example of a product and a pool can be found in the [gif-next-sandbox repository](https://github.com/etherisc/gif-next-sandbox). 
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       43 
35 
     | 
    
         
             
            ## Hardhat 
         
     | 
| 
       44 
36 
     | 
    
         | 
| 
       45 
37 
     | 
    
         
             
            ### NPM Commands
         
     | 
| 
         @@ -232,17 +224,7 @@ https://book.getfoundry.sh/reference/ 
     | 
|
| 
       232 
224 
     | 
    
         | 
| 
       233 
225 
     | 
    
         
             
            ## Style Guide
         
     | 
| 
       234 
226 
     | 
    
         | 
| 
       235 
     | 
    
         
            -
             
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
            Documentation of the code should be written inline using [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html).
         
     | 
| 
       238 
     | 
    
         
            -
             
     | 
| 
       239 
     | 
    
         
            -
            ### Naming conventions
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
            Additionally, we use the following naming conventions:
         
     | 
| 
       242 
     | 
    
         
            -
             
     | 
| 
       243 
     | 
    
         
            -
            - Function arguments and return types: If using custom data types, make the name include the type by appending the Type to the argument name, e.g. `function getInfo(NftId bundleNftId)` instead of `function getInfo(NftId bundleId)`. Background: Custom data types are lost when using the ABI or Typescript binding classes (e.g. instead of `NftID` a `uint96` is used), so the type needs to be included in the name to make it clear what the argument is without having to look at the documentation or checking the solidity source code. 
         
     | 
| 
       244 
     | 
    
         
            -
            - When naming a field or an attribute `id` and the context is not clear, call it `nftId` instead so its clear what type if id it is as there will be multiple ids for different kind of objects. Example: if you the function has a bundle nft id and a policy nft id as arguments, call them `bundleNftId` and `policyNftId` instead of `id` and `policyId`. In case of doubt, be a bit more verbose for the sake of clarity. 
         
     | 
| 
       245 
     | 
    
         
            -
            - When naming things, remember that the code will likely be used in Javascript/Typescript as well, so avoid names that are reserved in Javascript/Typescript. A list of reserved words in Javascript can be found [here](https://www.w3schools.com/js/js_reserved.asp) and a list of reserved words in Typescript can be found [here](https://www.tektutorialshub.com/typescript/identifiers-keywords-in-typescript/). 
         
     | 
| 
      
 227 
     | 
    
         
            +
            Please see https://docs.etherisc.com/gif-next/3.x/ for style guide and general coding rules. 
         
     | 
| 
       246 
228 
     | 
    
         | 
| 
       247 
229 
     | 
    
         
             
            ### Automatic code formatting
         
     | 
| 
       248 
230 
     | 
    
         | 
| 
         @@ -257,7 +239,7 @@ We use solhint to lint the code. 
     | 
|
| 
       257 
239 
     | 
    
         
             
            To execute linting run `npm run lint`.
         
     | 
| 
       258 
240 
     | 
    
         | 
| 
       259 
241 
     | 
    
         | 
| 
       260 
     | 
    
         
            -
            ### Adding Brownie (Legacy)
         
     | 
| 
      
 242 
     | 
    
         
            +
            ### Adding Brownie (Legacy - don't do that :wink: )
         
     | 
| 
       261 
243 
     | 
    
         | 
| 
       262 
244 
     | 
    
         
             
            python3 is already installed
         
     | 
| 
       263 
245 
     | 
    
         | 
| 
         @@ -405,65 +387,6 @@ Intercepting property 
     | 
|
| 
       405 
387 
     | 
    
         | 
| 
       406 
388 
     | 
    
         
             
            ### Product
         
     | 
| 
       407 
389 
     | 
    
         | 
| 
       408 
     | 
    
         
            -
            ### Payout Handling
         
     | 
| 
       409 
     | 
    
         
            -
             
     | 
| 
       410 
     | 
    
         
            -
            Pool specifies **retention level**.
         
     | 
| 
       411 
     | 
    
         
            -
            Retention level defines up to which percentage of the sum insured the pool is payout out using its own/current funds.
         
     | 
| 
       412 
     | 
    
         
            -
            Depending on the amount of a new payout the poolService decides to either execute the payout directly or to add the payout as a pending payout with a notification of the pool.
         
     | 
| 
       413 
     | 
    
         
            -
             
     | 
| 
       414 
     | 
    
         
            -
            The sequence below sketches the small payout flow (payout < retention amount)
         
     | 
| 
       415 
     | 
    
         
            -
            - retention level: 30%
         
     | 
| 
       416 
     | 
    
         
            -
            - sum insured: 1000
         
     | 
| 
       417 
     | 
    
         
            -
            - payout: 200
         
     | 
| 
       418 
     | 
    
         
            -
             
     | 
| 
       419 
     | 
    
         
            -
            ```mermaid
         
     | 
| 
       420 
     | 
    
         
            -
            sequenceDiagram
         
     | 
| 
       421 
     | 
    
         
            -
              participant customer
         
     | 
| 
       422 
     | 
    
         
            -
              participant product
         
     | 
| 
       423 
     | 
    
         
            -
              participant claimService
         
     | 
| 
       424 
     | 
    
         
            -
              participant poolService
         
     | 
| 
       425 
     | 
    
         
            -
              participant pool
         
     | 
| 
       426 
     | 
    
         
            -
              product->>claimService: createPayout()
         
     | 
| 
       427 
     | 
    
         
            -
              claimService ->> poolService: requestPayout()
         
     | 
| 
       428 
     | 
    
         
            -
              poolService -->> pool: verifyPayout() *
         
     | 
| 
       429 
     | 
    
         
            -
              poolService ->> poolService: processPayout()
         
     | 
| 
       430 
     | 
    
         
            -
              poolService ->> customer: transfer token for payout
         
     | 
| 
       431 
     | 
    
         
            -
              poolService ->> claimService: payoutExecuted()
         
     | 
| 
       432 
     | 
    
         
            -
              poolService -->> customer: payoutExecutedCallback() **
         
     | 
| 
       433 
     | 
    
         
            -
            ```
         
     | 
| 
       434 
     | 
    
         
            -
             
     | 
| 
       435 
     | 
    
         
            -
            *: if pool is configured to verify payouts before execution
         
     | 
| 
       436 
     | 
    
         
            -
             
     | 
| 
       437 
     | 
    
         
            -
            **: callback only if customer is contract (IPolicyHolder)
         
     | 
| 
       438 
     | 
    
         
            -
             
     | 
| 
       439 
     | 
    
         
            -
            The sequence below sketches the call flow for payouts larger than the retention amount
         
     | 
| 
       440 
     | 
    
         
            -
            - retention level: 30%
         
     | 
| 
       441 
     | 
    
         
            -
            - sum insured: 1000
         
     | 
| 
       442 
     | 
    
         
            -
            - payout: 500
         
     | 
| 
       443 
     | 
    
         
            -
              * locally available: 300
         
     | 
| 
       444 
     | 
    
         
            -
              * via policy (re-insurance): 200
         
     | 
| 
       445 
     | 
    
         
            -
             
     | 
| 
       446 
     | 
    
         
            -
            ```mermaid
         
     | 
| 
       447 
     | 
    
         
            -
            sequenceDiagram 
         
     | 
| 
       448 
     | 
    
         
            -
              participant customer
         
     | 
| 
       449 
     | 
    
         
            -
              participant product
         
     | 
| 
       450 
     | 
    
         
            -
              participant claimService
         
     | 
| 
       451 
     | 
    
         
            -
              participant poolService
         
     | 
| 
       452 
     | 
    
         
            -
              participant pool
         
     | 
| 
       453 
     | 
    
         
            -
              pool ->> reinsuranceProduct: applyForPolicy()
         
     | 
| 
       454 
     | 
    
         
            -
              product->>claimService: createPayout()
         
     | 
| 
       455 
     | 
    
         
            -
              claimService ->> poolService: requestPayout()
         
     | 
| 
       456 
     | 
    
         
            -
              poolService ->> pool: pendingPayoutAdded()
         
     | 
| 
       457 
     | 
    
         
            -
              pool ->> pool: getReinsurancePolicy()
         
     | 
| 
       458 
     | 
    
         
            -
              pool ->> reinsuranceProduct: claim()
         
     | 
| 
       459 
     | 
    
         
            -
              reinsuranceProduct -->> reinsurancePool: createPayout
         
     | 
| 
       460 
     | 
    
         
            -
              reinsurancePool ->> pool: transfer token for payout
         
     | 
| 
       461 
     | 
    
         
            -
              reinsurancePool ->> pool: payoutExecutedCallback()
         
     | 
| 
       462 
     | 
    
         
            -
              pool ->> poolService: processPendingPayout()
         
     | 
| 
       463 
     | 
    
         
            -
              poolService ->> customer: transfer token for payout
         
     | 
| 
       464 
     | 
    
         
            -
              poolService ->> claimService: payoutExecuted()
         
     | 
| 
       465 
     | 
    
         
            -
            ```
         
     | 
| 
       466 
     | 
    
         
            -
             
     | 
| 
       467 
390 
     | 
    
         
             
            ### Pool
         
     | 
| 
       468 
391 
     | 
    
         | 
| 
       469 
392 
     | 
    
         
             
            ### Distribution
         
     | 
| 
         @@ -334,6 +334,56 @@ 
     | 
|
| 
       334 
334 
     | 
    
         
             
                  "stateMutability": "view",
         
     | 
| 
       335 
335 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       336 
336 
     | 
    
         
             
                },
         
     | 
| 
      
 337 
     | 
    
         
            +
                {
         
     | 
| 
      
 338 
     | 
    
         
            +
                  "inputs": [],
         
     | 
| 
      
 339 
     | 
    
         
            +
                  "name": "getComponentInfo",
         
     | 
| 
      
 340 
     | 
    
         
            +
                  "outputs": [
         
     | 
| 
      
 341 
     | 
    
         
            +
                    {
         
     | 
| 
      
 342 
     | 
    
         
            +
                      "components": [
         
     | 
| 
      
 343 
     | 
    
         
            +
                        {
         
     | 
| 
      
 344 
     | 
    
         
            +
                          "internalType": "string",
         
     | 
| 
      
 345 
     | 
    
         
            +
                          "name": "name",
         
     | 
| 
      
 346 
     | 
    
         
            +
                          "type": "string"
         
     | 
| 
      
 347 
     | 
    
         
            +
                        },
         
     | 
| 
      
 348 
     | 
    
         
            +
                        {
         
     | 
| 
      
 349 
     | 
    
         
            +
                          "internalType": "contract IERC20Metadata",
         
     | 
| 
      
 350 
     | 
    
         
            +
                          "name": "token",
         
     | 
| 
      
 351 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 352 
     | 
    
         
            +
                        },
         
     | 
| 
      
 353 
     | 
    
         
            +
                        {
         
     | 
| 
      
 354 
     | 
    
         
            +
                          "internalType": "contract TokenHandler",
         
     | 
| 
      
 355 
     | 
    
         
            +
                          "name": "tokenHandler",
         
     | 
| 
      
 356 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 357 
     | 
    
         
            +
                        },
         
     | 
| 
      
 358 
     | 
    
         
            +
                        {
         
     | 
| 
      
 359 
     | 
    
         
            +
                          "internalType": "address",
         
     | 
| 
      
 360 
     | 
    
         
            +
                          "name": "wallet",
         
     | 
| 
      
 361 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 362 
     | 
    
         
            +
                        },
         
     | 
| 
      
 363 
     | 
    
         
            +
                        {
         
     | 
| 
      
 364 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 365 
     | 
    
         
            +
                          "name": "balanceAmount",
         
     | 
| 
      
 366 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 367 
     | 
    
         
            +
                        },
         
     | 
| 
      
 368 
     | 
    
         
            +
                        {
         
     | 
| 
      
 369 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 370 
     | 
    
         
            +
                          "name": "feeAmount",
         
     | 
| 
      
 371 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 372 
     | 
    
         
            +
                        },
         
     | 
| 
      
 373 
     | 
    
         
            +
                        {
         
     | 
| 
      
 374 
     | 
    
         
            +
                          "internalType": "bytes",
         
     | 
| 
      
 375 
     | 
    
         
            +
                          "name": "data",
         
     | 
| 
      
 376 
     | 
    
         
            +
                          "type": "bytes"
         
     | 
| 
      
 377 
     | 
    
         
            +
                        }
         
     | 
| 
      
 378 
     | 
    
         
            +
                      ],
         
     | 
| 
      
 379 
     | 
    
         
            +
                      "internalType": "struct IComponents.ComponentInfo",
         
     | 
| 
      
 380 
     | 
    
         
            +
                      "name": "info",
         
     | 
| 
      
 381 
     | 
    
         
            +
                      "type": "tuple"
         
     | 
| 
      
 382 
     | 
    
         
            +
                    }
         
     | 
| 
      
 383 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 384 
     | 
    
         
            +
                  "stateMutability": "view",
         
     | 
| 
      
 385 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 386 
     | 
    
         
            +
                },
         
     | 
| 
       337 
387 
     | 
    
         
             
                {
         
     | 
| 
       338 
388 
     | 
    
         
             
                  "inputs": [],
         
     | 
| 
       339 
389 
     | 
    
         
             
                  "name": "getInitialInfo",
         
     | 
| 
         @@ -665,6 +715,24 @@ 
     | 
|
| 
       665 
715 
     | 
    
         
             
                  "stateMutability": "nonpayable",
         
     | 
| 
       666 
716 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       667 
717 
     | 
    
         
             
                },
         
     | 
| 
      
 718 
     | 
    
         
            +
                {
         
     | 
| 
      
 719 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 720 
     | 
    
         
            +
                    {
         
     | 
| 
      
 721 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 722 
     | 
    
         
            +
                      "name": "to",
         
     | 
| 
      
 723 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 724 
     | 
    
         
            +
                    },
         
     | 
| 
      
 725 
     | 
    
         
            +
                    {
         
     | 
| 
      
 726 
     | 
    
         
            +
                      "internalType": "uint256",
         
     | 
| 
      
 727 
     | 
    
         
            +
                      "name": "tokenId",
         
     | 
| 
      
 728 
     | 
    
         
            +
                      "type": "uint256"
         
     | 
| 
      
 729 
     | 
    
         
            +
                    }
         
     | 
| 
      
 730 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 731 
     | 
    
         
            +
                  "name": "nftMint",
         
     | 
| 
      
 732 
     | 
    
         
            +
                  "outputs": [],
         
     | 
| 
      
 733 
     | 
    
         
            +
                  "stateMutability": "nonpayable",
         
     | 
| 
      
 734 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 735 
     | 
    
         
            +
                },
         
     | 
| 
       668 
736 
     | 
    
         
             
                {
         
     | 
| 
       669 
737 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       670 
738 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -137,6 +137,22 @@ 
     | 
|
| 
       137 
137 
     | 
    
         
             
                  "name": "ErrorComponentWalletAllowanceTooSmall",
         
     | 
| 
       138 
138 
     | 
    
         
             
                  "type": "error"
         
     | 
| 
       139 
139 
     | 
    
         
             
                },
         
     | 
| 
      
 140 
     | 
    
         
            +
                {
         
     | 
| 
      
 141 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 142 
     | 
    
         
            +
                    {
         
     | 
| 
      
 143 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 144 
     | 
    
         
            +
                      "name": "distributor",
         
     | 
| 
      
 145 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 146 
     | 
    
         
            +
                    },
         
     | 
| 
      
 147 
     | 
    
         
            +
                    {
         
     | 
| 
      
 148 
     | 
    
         
            +
                      "internalType": "NftId",
         
     | 
| 
      
 149 
     | 
    
         
            +
                      "name": "distributorNftId",
         
     | 
| 
      
 150 
     | 
    
         
            +
                      "type": "uint96"
         
     | 
| 
      
 151 
     | 
    
         
            +
                    }
         
     | 
| 
      
 152 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 153 
     | 
    
         
            +
                  "name": "ErrorDistributionAlreadyDistributor",
         
     | 
| 
      
 154 
     | 
    
         
            +
                  "type": "error"
         
     | 
| 
      
 155 
     | 
    
         
            +
                },
         
     | 
| 
       140 
156 
     | 
    
         
             
                {
         
     | 
| 
       141 
157 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       142 
158 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -478,6 +494,56 @@ 
     | 
|
| 
       478 
494 
     | 
    
         
             
                  "stateMutability": "nonpayable",
         
     | 
| 
       479 
495 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       480 
496 
     | 
    
         
             
                },
         
     | 
| 
      
 497 
     | 
    
         
            +
                {
         
     | 
| 
      
 498 
     | 
    
         
            +
                  "inputs": [],
         
     | 
| 
      
 499 
     | 
    
         
            +
                  "name": "getComponentInfo",
         
     | 
| 
      
 500 
     | 
    
         
            +
                  "outputs": [
         
     | 
| 
      
 501 
     | 
    
         
            +
                    {
         
     | 
| 
      
 502 
     | 
    
         
            +
                      "components": [
         
     | 
| 
      
 503 
     | 
    
         
            +
                        {
         
     | 
| 
      
 504 
     | 
    
         
            +
                          "internalType": "string",
         
     | 
| 
      
 505 
     | 
    
         
            +
                          "name": "name",
         
     | 
| 
      
 506 
     | 
    
         
            +
                          "type": "string"
         
     | 
| 
      
 507 
     | 
    
         
            +
                        },
         
     | 
| 
      
 508 
     | 
    
         
            +
                        {
         
     | 
| 
      
 509 
     | 
    
         
            +
                          "internalType": "contract IERC20Metadata",
         
     | 
| 
      
 510 
     | 
    
         
            +
                          "name": "token",
         
     | 
| 
      
 511 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 512 
     | 
    
         
            +
                        },
         
     | 
| 
      
 513 
     | 
    
         
            +
                        {
         
     | 
| 
      
 514 
     | 
    
         
            +
                          "internalType": "contract TokenHandler",
         
     | 
| 
      
 515 
     | 
    
         
            +
                          "name": "tokenHandler",
         
     | 
| 
      
 516 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 517 
     | 
    
         
            +
                        },
         
     | 
| 
      
 518 
     | 
    
         
            +
                        {
         
     | 
| 
      
 519 
     | 
    
         
            +
                          "internalType": "address",
         
     | 
| 
      
 520 
     | 
    
         
            +
                          "name": "wallet",
         
     | 
| 
      
 521 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 522 
     | 
    
         
            +
                        },
         
     | 
| 
      
 523 
     | 
    
         
            +
                        {
         
     | 
| 
      
 524 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 525 
     | 
    
         
            +
                          "name": "balanceAmount",
         
     | 
| 
      
 526 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 527 
     | 
    
         
            +
                        },
         
     | 
| 
      
 528 
     | 
    
         
            +
                        {
         
     | 
| 
      
 529 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 530 
     | 
    
         
            +
                          "name": "feeAmount",
         
     | 
| 
      
 531 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 532 
     | 
    
         
            +
                        },
         
     | 
| 
      
 533 
     | 
    
         
            +
                        {
         
     | 
| 
      
 534 
     | 
    
         
            +
                          "internalType": "bytes",
         
     | 
| 
      
 535 
     | 
    
         
            +
                          "name": "data",
         
     | 
| 
      
 536 
     | 
    
         
            +
                          "type": "bytes"
         
     | 
| 
      
 537 
     | 
    
         
            +
                        }
         
     | 
| 
      
 538 
     | 
    
         
            +
                      ],
         
     | 
| 
      
 539 
     | 
    
         
            +
                      "internalType": "struct IComponents.ComponentInfo",
         
     | 
| 
      
 540 
     | 
    
         
            +
                      "name": "info",
         
     | 
| 
      
 541 
     | 
    
         
            +
                      "type": "tuple"
         
     | 
| 
      
 542 
     | 
    
         
            +
                    }
         
     | 
| 
      
 543 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 544 
     | 
    
         
            +
                  "stateMutability": "view",
         
     | 
| 
      
 545 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 546 
     | 
    
         
            +
                },
         
     | 
| 
       481 
547 
     | 
    
         
             
                {
         
     | 
| 
       482 
548 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       483 
549 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -1069,6 +1135,24 @@ 
     | 
|
| 
       1069 
1135 
     | 
    
         
             
                  "stateMutability": "nonpayable",
         
     | 
| 
       1070 
1136 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       1071 
1137 
     | 
    
         
             
                },
         
     | 
| 
      
 1138 
     | 
    
         
            +
                {
         
     | 
| 
      
 1139 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 1140 
     | 
    
         
            +
                    {
         
     | 
| 
      
 1141 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 1142 
     | 
    
         
            +
                      "name": "to",
         
     | 
| 
      
 1143 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 1144 
     | 
    
         
            +
                    },
         
     | 
| 
      
 1145 
     | 
    
         
            +
                    {
         
     | 
| 
      
 1146 
     | 
    
         
            +
                      "internalType": "uint256",
         
     | 
| 
      
 1147 
     | 
    
         
            +
                      "name": "tokenId",
         
     | 
| 
      
 1148 
     | 
    
         
            +
                      "type": "uint256"
         
     | 
| 
      
 1149 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1150 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 1151 
     | 
    
         
            +
                  "name": "nftMint",
         
     | 
| 
      
 1152 
     | 
    
         
            +
                  "outputs": [],
         
     | 
| 
      
 1153 
     | 
    
         
            +
                  "stateMutability": "nonpayable",
         
     | 
| 
      
 1154 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 1155 
     | 
    
         
            +
                },
         
     | 
| 
       1072 
1156 
     | 
    
         
             
                {
         
     | 
| 
       1073 
1157 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       1074 
1158 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -3,6 +3,44 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
              "contractName": "IComponent",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "sourceName": "contracts/components/IComponent.sol",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "abi": [
         
     | 
| 
      
 6 
     | 
    
         
            +
                {
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 8 
     | 
    
         
            +
                    {
         
     | 
| 
      
 9 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 10 
     | 
    
         
            +
                      "name": "authority",
         
     | 
| 
      
 11 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 12 
     | 
    
         
            +
                    }
         
     | 
| 
      
 13 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 14 
     | 
    
         
            +
                  "name": "AccessManagedInvalidAuthority",
         
     | 
| 
      
 15 
     | 
    
         
            +
                  "type": "error"
         
     | 
| 
      
 16 
     | 
    
         
            +
                },
         
     | 
| 
      
 17 
     | 
    
         
            +
                {
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 19 
     | 
    
         
            +
                    {
         
     | 
| 
      
 20 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 21 
     | 
    
         
            +
                      "name": "caller",
         
     | 
| 
      
 22 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 23 
     | 
    
         
            +
                    },
         
     | 
| 
      
 24 
     | 
    
         
            +
                    {
         
     | 
| 
      
 25 
     | 
    
         
            +
                      "internalType": "uint32",
         
     | 
| 
      
 26 
     | 
    
         
            +
                      "name": "delay",
         
     | 
| 
      
 27 
     | 
    
         
            +
                      "type": "uint32"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 30 
     | 
    
         
            +
                  "name": "AccessManagedRequiredDelay",
         
     | 
| 
      
 31 
     | 
    
         
            +
                  "type": "error"
         
     | 
| 
      
 32 
     | 
    
         
            +
                },
         
     | 
| 
      
 33 
     | 
    
         
            +
                {
         
     | 
| 
      
 34 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 35 
     | 
    
         
            +
                    {
         
     | 
| 
      
 36 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 37 
     | 
    
         
            +
                      "name": "caller",
         
     | 
| 
      
 38 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 39 
     | 
    
         
            +
                    }
         
     | 
| 
      
 40 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 41 
     | 
    
         
            +
                  "name": "AccessManagedUnauthorized",
         
     | 
| 
      
 42 
     | 
    
         
            +
                  "type": "error"
         
     | 
| 
      
 43 
     | 
    
         
            +
                },
         
     | 
| 
       6 
44 
     | 
    
         
             
                {
         
     | 
| 
       7 
45 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       8 
46 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -126,6 +164,19 @@ 
     | 
|
| 
       126 
164 
     | 
    
         
             
                  "name": "ErrorNotRegistry",
         
     | 
| 
       127 
165 
     | 
    
         
             
                  "type": "error"
         
     | 
| 
       128 
166 
     | 
    
         
             
                },
         
     | 
| 
      
 167 
     | 
    
         
            +
                {
         
     | 
| 
      
 168 
     | 
    
         
            +
                  "anonymous": false,
         
     | 
| 
      
 169 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 170 
     | 
    
         
            +
                    {
         
     | 
| 
      
 171 
     | 
    
         
            +
                      "indexed": false,
         
     | 
| 
      
 172 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 173 
     | 
    
         
            +
                      "name": "authority",
         
     | 
| 
      
 174 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 175 
     | 
    
         
            +
                    }
         
     | 
| 
      
 176 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 177 
     | 
    
         
            +
                  "name": "AuthorityUpdated",
         
     | 
| 
      
 178 
     | 
    
         
            +
                  "type": "event"
         
     | 
| 
      
 179 
     | 
    
         
            +
                },
         
     | 
| 
       129 
180 
     | 
    
         
             
                {
         
     | 
| 
       130 
181 
     | 
    
         
             
                  "anonymous": false,
         
     | 
| 
       131 
182 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
         @@ -170,6 +221,69 @@ 
     | 
|
| 
       170 
221 
     | 
    
         
             
                  "name": "LogComponentWalletTokensTransferred",
         
     | 
| 
       171 
222 
     | 
    
         
             
                  "type": "event"
         
     | 
| 
       172 
223 
     | 
    
         
             
                },
         
     | 
| 
      
 224 
     | 
    
         
            +
                {
         
     | 
| 
      
 225 
     | 
    
         
            +
                  "inputs": [],
         
     | 
| 
      
 226 
     | 
    
         
            +
                  "name": "authority",
         
     | 
| 
      
 227 
     | 
    
         
            +
                  "outputs": [
         
     | 
| 
      
 228 
     | 
    
         
            +
                    {
         
     | 
| 
      
 229 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 230 
     | 
    
         
            +
                      "name": "",
         
     | 
| 
      
 231 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 232 
     | 
    
         
            +
                    }
         
     | 
| 
      
 233 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 234 
     | 
    
         
            +
                  "stateMutability": "view",
         
     | 
| 
      
 235 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 236 
     | 
    
         
            +
                },
         
     | 
| 
      
 237 
     | 
    
         
            +
                {
         
     | 
| 
      
 238 
     | 
    
         
            +
                  "inputs": [],
         
     | 
| 
      
 239 
     | 
    
         
            +
                  "name": "getComponentInfo",
         
     | 
| 
      
 240 
     | 
    
         
            +
                  "outputs": [
         
     | 
| 
      
 241 
     | 
    
         
            +
                    {
         
     | 
| 
      
 242 
     | 
    
         
            +
                      "components": [
         
     | 
| 
      
 243 
     | 
    
         
            +
                        {
         
     | 
| 
      
 244 
     | 
    
         
            +
                          "internalType": "string",
         
     | 
| 
      
 245 
     | 
    
         
            +
                          "name": "name",
         
     | 
| 
      
 246 
     | 
    
         
            +
                          "type": "string"
         
     | 
| 
      
 247 
     | 
    
         
            +
                        },
         
     | 
| 
      
 248 
     | 
    
         
            +
                        {
         
     | 
| 
      
 249 
     | 
    
         
            +
                          "internalType": "contract IERC20Metadata",
         
     | 
| 
      
 250 
     | 
    
         
            +
                          "name": "token",
         
     | 
| 
      
 251 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 252 
     | 
    
         
            +
                        },
         
     | 
| 
      
 253 
     | 
    
         
            +
                        {
         
     | 
| 
      
 254 
     | 
    
         
            +
                          "internalType": "contract TokenHandler",
         
     | 
| 
      
 255 
     | 
    
         
            +
                          "name": "tokenHandler",
         
     | 
| 
      
 256 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 257 
     | 
    
         
            +
                        },
         
     | 
| 
      
 258 
     | 
    
         
            +
                        {
         
     | 
| 
      
 259 
     | 
    
         
            +
                          "internalType": "address",
         
     | 
| 
      
 260 
     | 
    
         
            +
                          "name": "wallet",
         
     | 
| 
      
 261 
     | 
    
         
            +
                          "type": "address"
         
     | 
| 
      
 262 
     | 
    
         
            +
                        },
         
     | 
| 
      
 263 
     | 
    
         
            +
                        {
         
     | 
| 
      
 264 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 265 
     | 
    
         
            +
                          "name": "balanceAmount",
         
     | 
| 
      
 266 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 267 
     | 
    
         
            +
                        },
         
     | 
| 
      
 268 
     | 
    
         
            +
                        {
         
     | 
| 
      
 269 
     | 
    
         
            +
                          "internalType": "Amount",
         
     | 
| 
      
 270 
     | 
    
         
            +
                          "name": "feeAmount",
         
     | 
| 
      
 271 
     | 
    
         
            +
                          "type": "uint96"
         
     | 
| 
      
 272 
     | 
    
         
            +
                        },
         
     | 
| 
      
 273 
     | 
    
         
            +
                        {
         
     | 
| 
      
 274 
     | 
    
         
            +
                          "internalType": "bytes",
         
     | 
| 
      
 275 
     | 
    
         
            +
                          "name": "data",
         
     | 
| 
      
 276 
     | 
    
         
            +
                          "type": "bytes"
         
     | 
| 
      
 277 
     | 
    
         
            +
                        }
         
     | 
| 
      
 278 
     | 
    
         
            +
                      ],
         
     | 
| 
      
 279 
     | 
    
         
            +
                      "internalType": "struct IComponents.ComponentInfo",
         
     | 
| 
      
 280 
     | 
    
         
            +
                      "name": "info",
         
     | 
| 
      
 281 
     | 
    
         
            +
                      "type": "tuple"
         
     | 
| 
      
 282 
     | 
    
         
            +
                    }
         
     | 
| 
      
 283 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 284 
     | 
    
         
            +
                  "stateMutability": "view",
         
     | 
| 
      
 285 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 286 
     | 
    
         
            +
                },
         
     | 
| 
       173 
287 
     | 
    
         
             
                {
         
     | 
| 
       174 
288 
     | 
    
         
             
                  "inputs": [],
         
     | 
| 
       175 
289 
     | 
    
         
             
                  "name": "getInitialInfo",
         
     | 
| 
         @@ -337,6 +451,19 @@ 
     | 
|
| 
       337 
451 
     | 
    
         
             
                  "stateMutability": "view",
         
     | 
| 
       338 
452 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       339 
453 
     | 
    
         
             
                },
         
     | 
| 
      
 454 
     | 
    
         
            +
                {
         
     | 
| 
      
 455 
     | 
    
         
            +
                  "inputs": [],
         
     | 
| 
      
 456 
     | 
    
         
            +
                  "name": "isConsumingScheduledOp",
         
     | 
| 
      
 457 
     | 
    
         
            +
                  "outputs": [
         
     | 
| 
      
 458 
     | 
    
         
            +
                    {
         
     | 
| 
      
 459 
     | 
    
         
            +
                      "internalType": "bytes4",
         
     | 
| 
      
 460 
     | 
    
         
            +
                      "name": "",
         
     | 
| 
      
 461 
     | 
    
         
            +
                      "type": "bytes4"
         
     | 
| 
      
 462 
     | 
    
         
            +
                    }
         
     | 
| 
      
 463 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 464 
     | 
    
         
            +
                  "stateMutability": "view",
         
     | 
| 
      
 465 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 466 
     | 
    
         
            +
                },
         
     | 
| 
       340 
467 
     | 
    
         
             
                {
         
     | 
| 
       341 
468 
     | 
    
         
             
                  "inputs": [],
         
     | 
| 
       342 
469 
     | 
    
         
             
                  "name": "isNftInterceptor",
         
     | 
| 
         @@ -364,6 +491,24 @@ 
     | 
|
| 
       364 
491 
     | 
    
         
             
                  "stateMutability": "nonpayable",
         
     | 
| 
       365 
492 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       366 
493 
     | 
    
         
             
                },
         
     | 
| 
      
 494 
     | 
    
         
            +
                {
         
     | 
| 
      
 495 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 496 
     | 
    
         
            +
                    {
         
     | 
| 
      
 497 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 498 
     | 
    
         
            +
                      "name": "to",
         
     | 
| 
      
 499 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 500 
     | 
    
         
            +
                    },
         
     | 
| 
      
 501 
     | 
    
         
            +
                    {
         
     | 
| 
      
 502 
     | 
    
         
            +
                      "internalType": "uint256",
         
     | 
| 
      
 503 
     | 
    
         
            +
                      "name": "tokenId",
         
     | 
| 
      
 504 
     | 
    
         
            +
                      "type": "uint256"
         
     | 
| 
      
 505 
     | 
    
         
            +
                    }
         
     | 
| 
      
 506 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 507 
     | 
    
         
            +
                  "name": "nftMint",
         
     | 
| 
      
 508 
     | 
    
         
            +
                  "outputs": [],
         
     | 
| 
      
 509 
     | 
    
         
            +
                  "stateMutability": "nonpayable",
         
     | 
| 
      
 510 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 511 
     | 
    
         
            +
                },
         
     | 
| 
       367 
512 
     | 
    
         
             
                {
         
     | 
| 
       368 
513 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       369 
514 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -387,6 +532,19 @@ 
     | 
|
| 
       387 
532 
     | 
    
         
             
                  "stateMutability": "nonpayable",
         
     | 
| 
       388 
533 
     | 
    
         
             
                  "type": "function"
         
     | 
| 
       389 
534 
     | 
    
         
             
                },
         
     | 
| 
      
 535 
     | 
    
         
            +
                {
         
     | 
| 
      
 536 
     | 
    
         
            +
                  "inputs": [
         
     | 
| 
      
 537 
     | 
    
         
            +
                    {
         
     | 
| 
      
 538 
     | 
    
         
            +
                      "internalType": "address",
         
     | 
| 
      
 539 
     | 
    
         
            +
                      "name": "",
         
     | 
| 
      
 540 
     | 
    
         
            +
                      "type": "address"
         
     | 
| 
      
 541 
     | 
    
         
            +
                    }
         
     | 
| 
      
 542 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 543 
     | 
    
         
            +
                  "name": "setAuthority",
         
     | 
| 
      
 544 
     | 
    
         
            +
                  "outputs": [],
         
     | 
| 
      
 545 
     | 
    
         
            +
                  "stateMutability": "nonpayable",
         
     | 
| 
      
 546 
     | 
    
         
            +
                  "type": "function"
         
     | 
| 
      
 547 
     | 
    
         
            +
                },
         
     | 
| 
       390 
548 
     | 
    
         
             
                {
         
     | 
| 
       391 
549 
     | 
    
         
             
                  "inputs": [
         
     | 
| 
       392 
550 
     | 
    
         
             
                    {
         
     |