/* eslint-disable functional/no-throw-statement */ /* eslint-disable functional/no-conditional-statement */ import { createMarketContract } from './market/index' import { createMarketBehaviorContract } from './market-behavior/index' import { createPropertyContract } from './property/index' import { createPropertyFactoryContract } from './property-factory/index' import { createAllocatorContract } from './allocator/index' import { createLockupContract } from './lockup/index' import { createDevContract } from './dev/index' import { createWithdrawContract } from './withdraw/index' import { createRegistryContract } from './registry/index' import { createPolicyContract } from './policy' import { createPolicyGroupContract } from './policy-group' import { createMetricsContract } from './metrics' import { createPolicyFactoryContract } from './policy-factory' import { createSTokensContract } from './s-tokens' import { createMetricsGroupContract } from './metrics-group' import { createSimpleCollectionsContract } from './simpleCollection' import { ContractRunner } from 'ethers' export type DevkitContract = { readonly allocator: ReturnType readonly market: ReturnType readonly marketBehavior: ReturnType readonly property: ReturnType readonly propertyFactory: ReturnType readonly lockup: ReturnType readonly withdraw: ReturnType readonly dev: ReturnType readonly registry: ReturnType readonly policy: ReturnType readonly policyGroup: ReturnType readonly metrics: ReturnType readonly metricsGroup: ReturnType readonly policyFactory: ReturnType readonly sTokens: ReturnType readonly simpleCollections: ReturnType } export type ContractFactory = (ethersProvider: ContractRunner) => DevkitContract export type CreateDevkitContract = (provider: ContractRunner) => DevkitContract export const createDevkitContract: CreateDevkitContract = ( provider: ContractRunner, ): DevkitContract => ({ allocator: createAllocatorContract(provider), market: createMarketContract(provider), marketBehavior: createMarketBehaviorContract(provider), property: createPropertyContract(provider), propertyFactory: createPropertyFactoryContract(provider), lockup: createLockupContract(provider), withdraw: createWithdrawContract(provider), dev: createDevContract(provider), registry: createRegistryContract(provider), policy: createPolicyContract(provider), policyGroup: createPolicyGroupContract(provider), metrics: createMetricsContract(provider), metricsGroup: createMetricsGroupContract(provider), policyFactory: createPolicyFactoryContract(provider), sTokens: createSTokensContract(provider), simpleCollections: createSimpleCollectionsContract(provider), }) export const contractFactory: ContractFactory = createDevkitContract